﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace HCMUS_SearchService_Group2
{
    /////////////////////////////////////////////////
    /// \brief Lớp Từ Khóa Tỉnh Thành DAO 
    /// \author Dương Văn Phong -   0912334.
    /// \details <h3>Cung cấp hàm lấy danh sách từ khóa tỉnh thành với chuỗi tương ứng</h3>
    ////////////////////////////////////////////////
    public class CityKeyWordDAO : DataConnectionHelper, IKeyWordObjectDAO
    {
        
        /////////////////////////////////////////////////
        /// \brief Lấy DS CityKeyDTO
        /// \param[in] Không.
        /// \returns  List<CityKeyDTO>.
        /// \details <h3>Trả về danh sách tất cả các CityKeyDTO trong Database.</h3>
        /////////////////////////////////////////////////
        public static List<CityKeyDTO> GetAllDTOKeyWord()
        {
            List<CityKeyDTO> lstCityKey = new List<CityKeyDTO>();
            var lstResultKey = from data in DataConnectionHelper.Context.TUKHOATINHTHANHs
                               select data;
            foreach (var obj in lstResultKey)
            {
                CityKeyDTO temp = new CityKeyDTO();
                if(null != obj.MaTinhThanh)
                    temp.CityID = (int)obj.MaTinhThanh;
                temp.CityKeyID = obj.MaTuKhoaTinhThanh;
                temp.CityKeyWord = obj.TuKhoaTinhThanh1;
                lstCityKey.Add(temp);
            }

            return lstCityKey;
        }

        /////////////////////////////////////////////////
        /// \brief Hàm Tìm danh sách từ khóa tỉnh thành với chuỗi tương ứng
        /// \param[in] string
        /// \returns List<KeyWordDTO>
        /// \details <h3>Các bước thực hiện:</h3>
        /////////////////////////////////////////////////
        public List<KeyWordDTO> Search(string strInput)
        {
            /// - Bước 1: Khởi tạo danh sách dữ liệu
            List<CityKeyDTO> listTuKhoaTinhThanh = new List<CityKeyDTO>();
            List<KeyWordDTO> listTuKhoaTinhThanhDTO = new List<KeyWordDTO>();

            if (null != strInput)
            {
                strInput = strInput.Replace(@"'", @"''");
                /// - Bước 2: Truy vấn CSDL theo chuỗi truyền vào
                {
                    listTuKhoaTinhThanh = (from emp in SearchHelper.CityKeys
                                          where strInput.IndexOf(emp.CityKeyWord) != -1
                                          select emp).ToList();
                }
                
                /// - Bước 3: Chuyển đổi về kiểu dữ liệu tương ứng
                foreach (var tuKhoaTinhThanh in listTuKhoaTinhThanh)
                {
                  /*  CityKeyDTO cityKey = new CityKeyDTO();
                    cityKey.CityID = Convert.ToInt32(tuKhoaTinhThanh.MaTuKhoaTinhThanh);
                    cityKey.CityKeyID = Convert.ToInt32(tuKhoaTinhThanh.MaTinhThanh);
                    cityKey.CityKeyWord = tuKhoaTinhThanh.TuKhoaTinhThanh1;*/
                    listTuKhoaTinhThanhDTO.Add(tuKhoaTinhThanh);
                }
            }

            /// - Bước 4: return Kết quả
            return listTuKhoaTinhThanhDTO;
        }
    }
}
